import javax.tools.JavaCompiler;
import javax.tools.ToolProvider;
import java.io.File;
import java.io.IOException;
import java.util.ArrayList;
import java.util.List;

/**
 * Created by jiangzeyin on 2017/7/13.
 */
public class complier {

    public static void main(String[] a) throws IOException {


        try {


            //动态编译磁盘中的代码
            //生成的字节码文件存放到<module>/build/classes/main目录下
            File distDir = new File("java-demo/build/classes/main");
            if (!distDir.exists()) {
                distDir.mkdirs();
            }
            JavaCompiler javac = ToolProvider.getSystemJavaCompiler();
            //JavaCompiler最核心的方法是run, 通过这个方法编译java源文件, 前3个参数传null时,
            //分别使用标准输入/输出/错误流来 处理输入和编译输出. 使用编译参数-d指定字节码输出目录.
            int compileResult = javac.run(null, null, null, "-d", distDir.getAbsolutePath(), "D:\\ide\\tools\\good_tools\\src\\test\\java\\java\\Test1.java");
            //run方法的返回值: 0-表示编译成功, 否则表示编译失败
            if (compileResult != 0) {
                System.err.println("编译失败!!");
                return;
            }
        } catch (Exception e) {
            e.printStackTrace();
        }


    }

    private static List<String> getFileList(File file) throws IOException {
        List<String> javaSourceList = new ArrayList<>();
        if (file.isDirectory()) {
            File[] files = file.listFiles();
            for (int i = 0; i < (files != null ? files.length : 0); i++) {
                if (files[i].isDirectory()) {
                    List<String> list = getFileList(files[i]);
                    javaSourceList.addAll(list);
                } else {
                    javaSourceList.add(files[i].getPath());
                }
            }
        }
        return javaSourceList;
    }
}
